/*
* Copyright (C) 2025 ByteDance and/or its affiliates
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.  If not, see <https://www.gnu.org/licenses/>.
*/

#include "bytedock/core/constant.h"

namespace bytedock {

const lj_vdw kVdwTypeDatabase[] = {
    // sigma, epsilon
    {3.3152123, 0.0988000},
    {3.3152123, 0.0988000},
    {3.4789595, 0.1596000},
    {3.3152123, 0.0988000},
    {3.3977095, 0.1078000},
    {3.3152123, 0.0988000},
    {3.3152123, 0.0988000},
    {3.3152123, 0.0988000},
    {3.3152123, 0.0988000},
    {3.3152123, 0.0988000},
    {3.3152123, 0.0988000},
    {3.3152123, 0.0988000},
    {3.4789595, 0.1596000},
    {3.4789595, 0.1596000},
    {3.3977095, 0.1078000},
    {3.3977095, 0.1078000},
    {3.3977095, 0.1078000},
    {3.3977095, 0.1078000},
    {3.3152123, 0.0988000},
    {3.3152123, 0.0988000},
    {3.3152123, 0.0988000},
    {2.4219973, 0.0208000},
    {2.2438175, 0.0208000},
    {2.0656378, 0.0208000},
    {2.5363887, 0.0161000},
    {2.4472988, 0.0161000},
    {2.6254785, 0.0161000},
    {2.6001770, 0.0208000},
    {1.1064962, 0.0100000},
    {0.5379246, 0.0047000},
    {1.0746020, 0.0144000},
    {1.0890346, 0.0124000},
    {0.0000000, 0.0000000},
    {1.8874580, 0.0208000},
    {3.0342229, 0.0832000},
    {3.4659524, 0.2638000},
    {3.6125943, 0.3932000},
    {3.8411989, 0.4955000},
    {3.1808648, 0.1636000},
    {3.2735182, 0.1098000},
    {3.3841679, 0.0941000},
    {3.3651026, 0.0858000},
    {2.4995054, 3.8748000},
    {3.2058099, 0.2042000},
    {3.3841679, 0.0941000},
    {3.3841679, 0.0941000},
    {3.3841679, 0.0941000},
    {3.3841679, 0.0941000},
    {3.3841679, 0.0941000},
    {3.1899520, 0.2150000},
    {3.3651026, 0.0858000},
    {3.2699547, 0.1174000},
    {3.3590445, 0.0851000},
    {2.5885953, 2.5453000},
    {2.6776852, 1.6959000},
    {2.7667751, 1.1450000},
    {2.8558649, 0.7828000},
    {3.2790418, 0.1545000},
    {3.3681317, 0.1120000},
    {3.5076464, 0.0522000},
    {3.6501902, 0.0323000},
    {4.0446802, 0.0095000},
    {3.1808648, 0.1636000},
    {3.1808648, 0.1636000},
    {2.5885953, 2.5453000},
    {2.5885953, 2.5453000},
    {3.1899520, 0.2150000},
    {3.1899520, 0.2150000},
    {3.3651026, 0.0858000},
    {3.3651026, 0.0858000},
    {3.5076464, 0.0522000},
    {3.5076464, 0.0522000},
    {3.0481209, 0.1463000},
    {3.2428713, 0.0930000},
    {3.1560978, 0.0726000},
    {3.1560978, 0.0726000},
    {3.1560978, 0.0726000},
    {0.0000000, 0.0000000},
    {3.6940224, 0.2295000},
    {3.6940224, 0.2295000},
    {3.6940224, 0.2295000},
    {3.6940224, 0.2295000},
    {3.6940224, 0.2295000},
    {3.6940224, 0.2295000},
    {3.6940224, 0.2295000},
    {3.6940224, 0.2295000},
    {3.6940224, 0.2295000},
    {3.6940224, 0.2295000},
    {3.6940224, 0.2295000},
    {3.5324134, 0.2824000},
    {3.5324134, 0.2824000},
    {3.5324134, 0.2824000},
    {4.0584000, 0.0614000},
    {3.5324134, 0.2824000},
    {3.5324134, 0.2824000},
    {3.5324134, 0.2824000},
    {4.0584000, 0.0614000},
    {3.5324134, 0.2824000},
    {3.5324134, 0.2824000}
};

const std::string kVdwTypeTags[] = {
    "c",
    "cs",
    "c1",
    "c2",
    "c3",
    "ca",
    "cp",
    "cq",
    "cc",
    "cd",
    "ce",
    "cf",
    "cg",
    "ch",
    "cx",
    "cy",
    "c5",
    "c6",
    "cu",
    "cv",
    "cz",
    "h1",
    "h2",
    "h3",
    "h4",
    "h5",
    "ha",
    "hc",
    "hn",
    "ho",
    "hp",
    "hs",
    "hw",
    "hx",
    "f",
    "cl",
    "br",
    "i",
    "n",
    "n1",
    "n2",
    "n3",
    "n4",
    "na",
    "nb",
    "nc",
    "nd",
    "ne",
    "nf",
    "nh",
    "no",
    "ns",
    "nt",
    "nx",
    "ny",
    "nz",
    "n+",
    "nu",
    "nv",
    "n7",
    "n8",
    "n9",
    "ni",
    "nj",
    "nk",
    "nl",
    "nm",
    "nn",
    "np",
    "nq",
    "n5",
    "n6",
    "o",
    "oh",
    "op",
    "oq",
    "os",
    "ow",
    "p2",
    "p3",
    "p4",
    "p5",
    "pb",
    "pc",
    "pd",
    "pe",
    "pf",
    "px",
    "py",
    "s",
    "s2",
    "s4",
    "s6",
    "sh",
    "ss",
    "sx",
    "sy",
    "sp",
    "sq",
    "coul"  // Extra/tricky item to deciding grid file name
};

const param_t kRadiusDatabase[] = {
    1.5,   // Default
    1.2,   // H
    1.5,   // He
    1.5,   // Li
    1.5,   // Be
    1.5,   // B
    1.7,   // C
    1.55,  // N
    1.5,   // O
    1.5,   // F
    1.5,   // Ne
    1.5,   // Na
    1.5,   // Mg
    1.5,   // Al
    2.1,   // Si
    1.85,  // P
    1.8,   // S
    1.7    // Cl
};

const param_t kScreenDatabase[] = {
    0.8,   // Default
    0.85,  // H
    0.8,   // He
    0.8,   // Li
    0.8,   // Be
    0.8,   // B
    0.72,  // C
    0.79,  // N
    0.85,  // O
    0.88,  // F
    0.8,   // Ne
    0.8,   // Na
    0.8,   // Mg
    0.8,   // Al
    0.8,   // Si
    0.86,  // P
    0.96   // S
};

}
